Enterprises often deploy a variety of devices and applications within their processing environments. Generally, each business vertical has to support some form of an industry standard Application Programming Interface (API) at a business's application level (e.g., financial solutions often support CEN XFS (eXtensions for Financial Services) and retail solutions support OPOS (Object Linking and Embedding (OLE) for retail POS), etc.). In order for applications to share device hardware with device driver implementations a custom and proprietary interface is required.
As a result, when new device hardware is introduced, updates to existing device hardware is made, or existing device hardware is needed in a new OS platform, businesses have to wait on support from their industry standard APIs or have to custom code individual applications to provide support. This creates time lags waiting on support and is not conducive to code reuse and portability.
Even though the third-party APIs were meant to create better integration for applications, since they are so tightly coupled to the underlying devices in which they support and the OSs on which they run, the applications are still tightly coupled to their OS environments and environmental configurations. Moreover, applications from different configurations or different business units that want to access devices used by other business units require substantial modification to achieve such access.
Moreover, third-party APIs are OS specific, which means different OSs require different modifications for any third-party API to work properly, and some APIs may not even support a desired OS of an enterprise. Still further, even when a third-party API has versions of that API for multiple OSs, each such version may have different commands or different features from the other versions. This means that trying to allow an application using a first OS having a first API (supported by the first OS) to access a device available from a second OS have a second API (supported by the second OS) is not seamless and requires a lot of programming rework and integration. So, device sharing across OS environments is uncommon in the industry.